package com.demo.word.controller;


import org.apache.pdfbox.pdmodel.PDDocument;
import technology.tabula.*;
import technology.tabula.extractors.SpreadsheetExtractionAlgorithm;

import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * @Author likz
 * @Date 2024/12/17 10:05
 * @Description
 **/
public class PDFContent {

    private static final SpreadsheetExtractionAlgorithm SPREADSHEEET_EXTRACTION_ALGORITHM = new SpreadsheetExtractionAlgorithm();

    public static void main(String[] args) {
        try {
            // 1. 加载 PDF 文档
            File file = new File("C:\\Users\\likz\\Desktop\\健帆\\CTCAE50.pdf");
            //File file = new File("C:\\Users\\likz\\Downloads\\健帆维护团队_常规监查访视_676249d866cbe4b370af56e8.pdf");
            PDDocument document = PDDocument.load(file);

            // 2. 创建 PDFTextStripper 对象，并提取文本内容
//            PDFTextStripper textStripper = new PDFTextStripper();
//            String content = textStripper.getText(document);
//
//            // 3. 全部输出文本内容
//            //System.out.println(content);
//            for (int pageNum = 1; pageNum <= document.getNumberOfPages(); pageNum++) {
//                textStripper.setStartPage(pageNum);
//                textStripper.setEndPage(pageNum);
//                textStripper.setSortByPosition(true);
//                textStripper.setShouldSeparateByBeads(true);
//                String pageText = textStripper.getText(document);
//                String returnChar = StrUtils.removeReturnChar(pageText);
//                System.out.println("" + returnChar);
//                System.out.println("======第" + pageNum + "页结束=======");
//            }

            // https://juejin.cn/post/7278122204402647074 pdf表格识别
            PageIterator pi = new ObjectExtractor(document).extract(); // 获取页面迭代器

            // 遍历所有页面
            while (pi.hasNext()) {
                Page page = pi.next(); // 获取当前页
                int pageNumber = page.getPageNumber();
                System.out.println("当前第"+pageNumber+"页");
                List<Table> tableList = SPREADSHEEET_EXTRACTION_ALGORITHM.extract(page); // 解析页面上的所有表格

                // 遍历所有表格
                for (Table table : tableList) {
                    List<List<RectangularTextContainer>> rowList = table.getRows(); // 获取表格中的每一行
                    // 遍历所有行并获取每个单元格信息
                    for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) {
                        List<RectangularTextContainer> cellList = rowList.get(rowIndex); // 获取行中的每个单元格
                        for (int cellIndex = 0; cellIndex < cellList.size(); cellIndex++) {

                        }
                        //callback.handler(cellList, rowIndex, reJsonArr);
                    }
                }
            }




            // 4. 关闭 PDF 文档
            document.close();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }





}
